package com.lebang.medicalInquiry.model;

import org.apache.shiro.authc.AuthenticationToken;

/**
 *  继承 AuthenticationToken
 *
 **/
public class JWTToken implements AuthenticationToken {
    /** shiro 在每次需要授权的时候都会进行登录认证, 而这个时候 是没有账号密码的,有的只是前端传的token信息
     *  所以 就使用 token 在定义realm中 进行授权时候的登录认证
     *  注意点: 如果在配置中使用了 ahthc  那么shiro会默认使用 FormAuthenticationFilter 过滤器,每次需要授权的时候都会访问
     *  如果想要我们授权成功那么就需要实现FormAuthenticationFilter 过滤器 并且在执行shiro的登录认证
     */
    private String token;
    /**
     * The username
     */
    private String username;

    /**
     * The password, in char[] format
     */
    private char[] password;

    public JWTToken(String token) {
        this.token = token;
        this.password = token.toCharArray();
    }
    public JWTToken(String username, char[] password) {
        this.username = username;
        this.password = password;

    }
    public String getToken() {
        return this.token;
    }

    @Override
    public Object getPrincipal() {
        return  this.username;
    }

    /**
     *用户登录凭证 shiro 会在 我们realm返回的 SimpleAuthenticationInfo 中的 Credentials 参数进行比较,
     * 如果不一致那么就是登录认证失败 相当于比较密码
     **/
    @Override
    public Object getCredentials() {
        return this.password;
    }



}